//=============================================================================
/**
 * @file	pkthln_steal_local.h
 * @brief	フラッグ
 * @date	2008.08.020
 */
//=============================================================================

#ifndef	__PKTHLN_STL_LOCAL_H__
#define	__PKTHLN_STL_LOCAL_H__

#include "../../pokethlon.h"
#include "../../pkthln_poke_act.h"

#define PT_ACT_NUM	(2)		//ポイント取得アクター数　数を変えると必要メモリも変わる
#define FLAG_DISP_MAX	(5)			//表示旗最大

#define WALL_Y_LIMIT_MIN	(104)		//ドット
#define WALL_Y_LIMIT_MAX	(392)		//ドット
#define WALL_X_LIMIT_MIN	(144)		//ドット
#define WALL_X_LIMIT_MAX	(368)		//ドット

#define GOAL_Y_LIMIT_MAX	(416)		//ドット
#define GOAL_X_LIMIT_MIN	(208)		//ドット
#define GOAL_X_LIMIT_MAX	(304)		//ドット

//ヒットチェックのリターンコード
typedef enum {
	HIT_RC_NONE = 0,
	HIT_RC_UWALL,	//上側の壁にヒット
	HIT_RC_RWALL,	//右側の壁にヒット
	HIT_RC_DWALL,	//下側の壁にヒット
	HIT_RC_LWALL, 	//左側の壁にヒット
	HIT_RC_LU_VRT,	//左上頂点にヒット
	HIT_RC_RU_VRT,	//右上頂点にヒット
	HIT_RC_RD_VRT,	//右下頂点にヒット
	HIT_RC_LD_VRT,	//左下頂点にヒット
	//↓ここより、強制押し出し
	HIT_RC_UWALL_F,	//上側の壁にヒット
	HIT_RC_RWALL_F,	//右側の壁にヒット
	HIT_RC_DWALL_F,	//下側の壁にヒット
	HIT_RC_LWALL_F, //左側の壁にヒット
}HIT_RC;

typedef enum {
	CHG_MOVE_NONE = 0,
	CHG_MOVE_DOWN,		//画面下に移動するシーケンス
	CHG_MOVE_UP,		//画面下から出て来るシーケンス
}CHG_STATE;

typedef struct STL_POKE_PARAM_tag
{
	float Accel1;
	float Accel2;
	float Power;
	int PanicTime;
	u8 SpeedMax;
	u8 dummy[3];
}STL_POKE_PARAM;

typedef struct STL_POKE_tag
{
	//アクターポインタ
	POKE_ACT_PTR PokeActPtr[ENTRY_MAX];		//ポケモンアクター１チーム３匹
	//各ポケのパラメータ
	STL_POKE_PARAM Param[ENTRY_MAX];
	//ステート
	PKTHLN_ACT_PTR	StateActPtr;
	//ポイントゲット
	PKTHLN_ACT_PTR	PtActPtr[PT_ACT_NUM];
	//旗取得
	PKTHLN_ACT_PTR	FlgGetActPtr;
	//座標
	VecFx32 Pos;
	VecFx32 Speed;
	s16 DemoOfsY;
	u8	LocalFlgGetCount;		//旗取った時用
	u8	LocalFlgNum;			//旗取った時用

	HIT_RC HitRc;

	u16 PtActIdx;	//ポイント取得アクターインデックス
	u16 TouchTime;	//タッチ時間
	VecFx32 TPos;	//タッチした座標
	VecFx32 LastTPos;	//タッチした座標

	u8 Hit[4];		//他プレーヤポケとのヒット状況（自分のワークもあるが使用しない）

	int  NetID;

	u8 ChgFlg;
	u8 ChgState;
	u8 ChgStateLocal;
	u8 ChgSeq;		//交代シーケンサ
	u8 PokeMvCount;
	u8 MoveMode;
	u8 PanicCount;
	u8 StateLocal;
	u8 HitFrame;
	u8 MoveVecDcd;			//移動ベクトル決定処理有無
	u8 State;
	u8 TempPoint;			//獲得得点テンポラリ
	u8 PtUpTime;			//得点取得マージン
	u8 PtGetTime;			//得点取得硬直時間
	u8 FlagNum;
	u8 Pause;

	u16 Point;			//獲得点数
	u16 DispPoint;		//表示点数

	u8 Dir;
	u8 StlPokeIdx;		//現在の走行ポケインデックス	0〜2
	u8 dummy;
	u8 HitFlag[FLAG_DISP_MAX];
}STL_POKE;

typedef struct STL_FLAG_tag
{
	BOOL Valid;
	PKTHLN_ACT_PTR	ActPtr;
	PKTHLN_ACT_PTR	EffActPtr;
	int Idx;	//0〜19
	//↓ＡＩ参照用
	u16 X;
	u16 Y;
}STL_FLAG;

typedef struct OBJ_CHAR_POS_tag
{
	u8 X;
	u8 Y;
}OBJ_CHAR_POS;

#endif	//__PKTHLN_STL_LOCAL_H__
